package 作业;
/**
 * **训练目标**：掌握java中反射的基本使用
 * **需求描述**：
 * 1. ArrayList<Integer> list = new ArrayList<Integer>();
 *    这个泛型为Integer的ArrayList中存放一个String类型的对象
 *    - 获取ArrayList的字节码Class
 *    - 获取add方法，Method
 *    - 执行Method方法，传递实际参数字符串
 *    - 打印ArrayList中的数据
 */
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.lang.reflect.Method;

public class ClassTest {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        // 创建一个ArrayList对象
        ArrayList<String> list =new ArrayList<>();
        // 获取ArrayList对象的Class对象
        Class<?> clazz =list.getClass();
        // 获取ArrayList对象的add方法
        Method addMethod = clazz.getDeclaredMethod("add",Object.class);
        // 调用ArrayList对象的add方法，传入参数"Hello Reflection"
        addMethod.invoke(list,"Hello Reflection");
        // 输出ArrayList对象
        System.out.println(list);


    }
}
   /* public static void main(String[] args) throws Exception {
        // 创建一个泛型为Integer的ArrayList
        ArrayList<Integer> list = new ArrayList<Integer>();

        // 获取ArrayList的字节码Class
        Class<?> clazz = list.getClass();

        // 获取add方法
        Method addMethod = clazz.getMethod("add", Object.class);

        // 执行Method方法，传递实际参数字符串
        addMethod.invoke(list, "Hello Reflection");

        // 打印ArrayList中的数据
        System.out.println(list);*/
